0x00 首先
目前在深入的学习PHP中 自己是个学安全的 所以对于代码的安全较为敏感 网站的的漏洞源于代码的漏洞 白盒狗专注代码漏洞挖掘30年
学好代码审计的关键也是写好代码的关键:
- 了解恶意用户要从哪些入口攻击整个框架
- 一切输入都是有害的
- 不要信任任何一个用户
- 代码的逻辑
0x01 过滤输入
a.验证提交值是否为期望值或者允许值
<html> |
(a): |
比较一下(a)(b)两种后台验证 (b)显然确保了正确值 对于处理数据方面显然很重要
b.确认提交类型是否为允许类型
$number_of_nights = (int)$_POST[’num_nights’]; |
这种不仅能确认正确的输入 也可以改进系统的安全
c.输入数据库的数据
- 输入必须使用
addslashes()
函数 stripslashes()
用来返回数据的原始形式- php.ini文件中开启
magic_quotes_gpc
(格式化GET POST和cookie变量)和magic_quotes_runtime
(格式化进入数据库的数据) 自动添加和过滤斜杠
d.其他恶意输入
- 当用户传递数据给
system()
和exec()
时 必须使用escapeshellcmd()
避免任何恶意用户运行系统命令<?php
$a = escapeshellcmd($_GET['id']); //1.php?id=sixwhale;ls
$b = $_GET['id'];
system("echo $a");//结果(1)
echo "<p>";
system("echo $b");//结果(2)
?>
结果(1): sixwhale;ls
结果(2): sixwhale 1.php(遍历当前目录下所有文件)
;
在shell里是分割命令的作用 所以可想而知 只要改变;
后的值就可以导致很多命令注入
strip_tags()
去掉HTML和PHP标记 避免恶意脚本植入
0x02 转义输出
最常见的就是插入恶意的HTML代码 使用htmlspecialchars()
或者htmlentities()
函数
……
0x03 (//∀//)
今天看到了PHP与web安全的部分 虽然之前在网上了解过 实践中也有接触 但是感觉还是自己总结笔记印象比较深刻(毕竟还是希望在博客里写一些对自己有用的东西!!!) 只写了一部分 不定期更新中 希望不要吐槽啦(இдஇ; )